home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-07-30 | 75.4 KB | 1,623 lines |
-
-
-
-
-
-
- Internet Engineering Task Force Audio-Video Transport WG
- INTERNET-DRAFT H. Schulzrinne/S. Casner
- AT&T/ISI
- July 30, 1993
- Expires: 10/01/93
-
-
- RTP: A Real-Time Transport Protocol
-
-
-
- Status of this Memo
-
-
- This document is an Internet Draft. Internet Drafts are working documents
- of the Internet Engineering Task Force (IETF), its Areas, and its Working
- Groups. Note that other groups may also distribute working documents as
- Internet Drafts.
-
- Internet Drafts are draft documents valid for a maximum of six months.
- Internet Drafts may be updated, replaced, or obsoleted by other documents
- at any time. It is not appropriate to use Internet Drafts as reference
- material or to cite them other than as a ``working draft'' or ``work in
- progress.''
-
- Please check the I-D abstract listing contained in each Internet Draft
- directory to learn the current status of this or any other Internet Draft.
-
- Distribution of this document is unlimited.
-
-
- Abstract
-
-
- This draft describes a real-time transport protocol (RTP)
- suitable for the network transport of real-time data, such as
- audio, video or simulation data for both multicast and unicast
- transport services. The data transport is enhanced by a
- control protocol (RTCP) designed to provide minimal control and
- identification functionality particularly in multicast networks.
- RTP and RTCP are designed to be independent of the underlying
- transport and network layers. The protocol supports the use of
- RTP-level translators and bridges. Within multicast associations,
- sites can direct control messages to individual sites.
-
-
- This specification is a product of the Audio-Video Transport working group
- within the Internet Engineering Task Force. Comments are solicited and
- should be addressed to the working group's mailing list at rem-conf@es.net
- and/or the authors.
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- Contents
-
-
- 1 Introduction 2
-
-
- 2 Protocol Conventions 3
-
- 3 Real-time Data Transfer Protocol -- RTP 4
-
- 3.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
-
- 3.2 RTP Fixed Header Fields . . . . . . . . . . . . . . . . . . . . . . 6
-
- 3.3 The RTP Options . . . . . . . . . . . . . . . . . . . . . . . . . . 8
-
- 3.4 Reverse-Path Option . . . . . . . . . . . . . . . . . . . . . . . . 9
-
- 3.5 Security Options . . . . . . . . . . . . . . . . . . . . . . . . . 11
-
- 3.6 The Use of the Security Options . . . . . . . . . . . . . . . . . . 15
-
-
- 4 Real Time Control Protocol --- RTCP 17
-
- 5 Security Considerations 22
-
-
- 6 RTP over network and transport protocols 23
-
- 6.1 Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
-
- 6.2 ST-II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
-
-
- A Implementation Notes 24
-
- A.1 Timestamp recovery . . . . . . . . . . . . . . . . . . . . . . . . 24
-
- A.2 Detecting the Beginning of a Synchronization Unit . . . . . . . . . 25
-
- A.3 Demultiplexing and Locating the Synchronization Source . . . . . . 26
-
- B Addresses of Authors 27
-
-
-
- 1 Introduction
-
-
- This draft concisely specifies a real-time transport protocol. A discussion
- of the design decisions can be found in the current version of the companion
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 2]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- Internet draft draft-ietf-avt-issues.txt. The transport protocol provides
- end-to-end delivery services for one or more s_t_r_e_a_m_s_ of data with real-time
- characteristics, for example, interactive audio and video. It does n_o_t_
- guarantee delivery or prevent out-of-order delivery, nor does it assume that
- the underlying network is reliable and delivers packets in sequence. [The
- sequence numbers included in RTP allow the end system to reconstruct the
- sender's packet sequence, but sequence numbers may also be used to determine
- the proper location of a packet, for example in video decoding, without
- necessarily decoding packets in sequence]. RTP is designed to run on top
- of a variety of network and transport protocols, for example, IP, ST-II
- or UDP. [For most applications, RTP offers insufficient demultiplexing to
- run directly on IP.] RTP transfers data in a single direction, possibly to
- multiple destinations if supported by the underlying network. A mechanism
- for indicating a return path for control data is provided.
-
- While RTP is primarily designed to satisfy the needs of multi-participant
- multimedia conferences, it is not limited to that particular application.
- Storage of continuous data, interactive distributed simulation, active badge
- and control and measurement applications may also find RTP applicable.
- Profiles are used to instantiate certain header fields and options for
- particular sets of applications. A profile for audio and video data may be
- found in the companion Internet draft draft-ietf-avt-profile.txt.
-
- This document defines two packet formats and protocols:
-
-
- o the real-time transport protocol (RTP) for exchanging data with
- real-time properties.
-
- o the real-time control protocol (RTCP) for conveying information about
- the sites in an on-going association. RTCP options may be ignored
- without affecting the ability to correctly receive data. RTCP is used
- for loosely controlled conferences, i.e., where there is no explicit
- admission control and set-up. Its functionality may be subsumed by
- a conference control protocol (which is beyond the scope of this
- document).
-
-
-
- 2 Protocol Conventions
-
-
- Control fields (options) for RTP and RTCP share the same structure and
- numbering space and are carried within the same packet. Options may appear
- in any order, unless specifically restricted by the option description.
- [The position of some security options may have significance.] Each option
- consists of the final bit, the option type designation, a one-octet length
- field denoting the total number of 32-bit long words comprising the option
- (including final bit, type and length), and finally any option-specific
- data. The last option before the packet data portion (``payload'') has the
- 'F' (final) bit set to one, for all other options this field has a value of
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 3]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- zero.
-
- Fields within the fixed header and within options are aligned to the natural
- length of the field, i.e., 16-bit words are aligned on even addresses,
- 32-bit long words are aligned at addresses divisible by four, etc. Octets
- designated as padding have the value zero. Options unknown to the RTP
- implementation or the application are to be ignored. Options with option
- types having values from 64 to 127 inclusive are to be used for private
- extensions. Fields designated as 'reserved' or 'R' are set aside for future
- use; they should be set to zero by senders and ignored by receivers.
-
- All integer fields are carried in network byte order, that is, most
- significant byte (octet) first. The transmission order is described in
- detail in [1], Appendix A. Unless otherwise noted, numeric constants are in
- decimal (base 10). Numeric constants prefixed by '0x' are in hexadecimal.
-
- Textual information is encoded accorded to the UTF-2 encoding of the ISO
- standard 10646 (Annex F) [2,3]. US-ASCII is a subset of this encoding and
- requires no additional encoding. The presence of multi-byte encodings is
- indicated by setting the most significant bit to a value of one. A byte
- with a binary value of zero may be used as a string terminator for padding
- purposes.
-
- [Text in square brackets is intended to motivate the design decisions made.]
-
-
-
- 3 Real-time Data Transfer Protocol -- RTP
-
-
- 3.1 Definitions
-
-
- P_a_y_l_o_a_d_ is the data following the RTP fixed header and the RTP/RTCP options.
- The payload format and interpretation are beyond the scope of this memo. A
- valid RTP packet may carry no payload.
-
- An R_P_D_U_ stands for RTP protocol data unit. It consists of the encapsulation
- specific to a particular underlying protocol, the fixed RTP header, RTP and
- RTCP options (if any) and the payload, if any.
-
- A s_y_n_c_h_r_o_n_i_z_a_t_i_o_n_ s_o_u_r_c_e_ is the combination of one or more content sources
- with its own timing. The RPDUs emitted by a synchronization source
- have non-decreasing sequence numbers and time stamps (modulo their field
- lengths). The audio coming from a microphone or the video from a source
- are examples of synchronization sources. Typically, a single source emits a
- single medium (e.g., audio or video). A synchronization source is a member
- of exactly one channel, as defined below. A synchronization source may
- change its data format over time. Synchronization sources are identified
- by their source network address, source transport address (e.g., UDP source
- port) and the value of SSRC identifier carried in the SSRC option. If the
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 4]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- SSRC option is not present, a value of zero for that identifier is assumed.
-
- A c_o_n_t_e_n_t_ s_o_u_r_c_e_ is the actual source of the data carried, for example, the
- user and host that originally generated the audio data. One or more content
- sources may contribute data for one synchronization source. Content sources
- are used for identifying the logical source of the data; they have no effect
- on the delivery of the data itself.
-
- A n_e_t_w_o_r_k_ s_o_u_r_c_e_ is the network-level origin of the RPDUs as seen by the
- receiving end system.
-
- All sources sending to the same destination network address and
- transport-level address using the same RTP flow identifier belong to same
- c_h_a_n_n_e_l_.
-
- An e_n_d_ s_y_s_t_e_m_ generates the content to be used in RTP packets and delivers
- the content of received RTP packets to the user application. An end system
- can act as one or more synchronization sources. (Most end systems are
- expected to be a single synchronization source.)
-
- An (RTP-level) b_r_i_d_g_e_ receives RTP packets from one or more sources,
- combines them in some manner and then forwards a new RTP packet. A bridge
- may change the data format. Since the timing among multiple input source
- will not generally be synchronized, the bridge will make timing adjustments
- among the streams and generate its own timing for the combined stream.
- Therefore, bridges are synchronization sources, with each of the sources
- whose packets were combined into an outgoing RTP packet as the content
- sources for that outgoing packet. Audio bridges and media converters are
- examples of bridges. Example: assume SMITH@FOO and JONES@BAR are using a
- bridge to translate their audio from one encoding to another. The bridge
- mixes audio packets from Smith and Jones together and forwards the mixed
- packets. If, say, Smith was talking, she is indicated as the content
- source of the outgoing packet, allowing the receiver to properly display the
- current speaker rather than just the bridge that mixed the audio. For
- an end system receiving RTP packets from that bridge, the bridge is the
- synchronization source and Smith the content source. The RTP-level bridges
- described in this document are unrelated to the data link-layer bridges
- found in local area networks. If there is possibility for confusion, the
- term 'RTP-level bridge' should be used. [The name 'bridge' follows common
- telecommunication usage.]
-
- An (RTP-level) t_r_a_n_s_l_a_t_o_r_ does not alter the timing of packets. Examples of
- its use include encoding conversion without mixing or retiming, conversion
- from multicast to unicast, and application-level filters in firewalls.
- A translator is neither a synchronization nor a content source. The
- properties of bridges and translators are summarized in Table 1. Checkmarks
- in parentheses designate possible, but unlikely actions.
-
- A s_y_n_c_h_r_o_n_i_z_a_t_i_o_n_ u_n_i_t_ consists of one or more packets that, as a group,
- share a common fixed delay between generation and playout of each part of
- the group, or can only be scheduled as a whole. The delay may change at the
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 5]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
-
-
- end sys. bridge translator
- mix sources -- x --
- change encoding N/A x x
- encrypt x x (x)
- sign for authentication x x --
- touch content x x (x)
- insert CSRC -- x --
- insert SSRC x x x
- insert SDST x x --
- insert SDES x x --
-
-
- Table 1: The properties of end systems, bridges and translators
-
- beginning of such a synchronization unit. The most common synchronization
- units are talkspurts for voice and frames for video transmission.
-
- N_o_n_-_R_T_P_ m_e_c_h_a_n_i_s_m_s_ refers to other protocols and mechanisms that may be
- needed to provide a useable service. In particular, for multimedia
- conferences, a conference control application may distribute encryption
- and authentication keys, negotiate the encryption algorithm to be used,
- determine the mapping from the RTP format field to the actual data format
- used. For simple applications, electronic mail or a conference database may
- also be used. The specification of the mechanism itself is outside the
- scope of this memorandum.
-
-
- 3.2 RTP Fixed Header Fields
-
-
- The RTP header has the following format:
-
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Ver| FlowID |P|S| format | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp (seconds) | timestamp (fraction) |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | options ... |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
-
- The fields in the first eight octets are present in every RTP packet and
- have the following meaning:
-
-
- protocol version: 2 bits
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 6]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- Defines the protocol version. The version number of the protocol
- defined in this memo is one.
-
- FlowID: 6 bits
- The value of the field is the flow identifier, which forms part of
- the tuple identifying a channel (see definition above). [The flow ID
- field is convenient if several different channels are to receive the
- same treatment by the underlying layers or if a profile allows for
- the concatenation of several RPDUs on different channels into a single
- protocol data unit of the underlying protocol layer.]
-
- option present bit (P): 1 bit
- This flag has a value of one if the fixed RTP header is followed by one
- or more options and a value of zero otherwise.
-
- end-of-synchronization-unit (S): 1 bit
- This flag has a value of one in the last packet of a synchronization
- unit, a value of zero otherwise. [As shown in Section A, the beginning
- of a synchronization unit can be readily established from this flag.
- If this flag were to signal to the beginning of a synchronization unit,
- the end of a synchronization unit could not be established in real
- time.]
-
- format: 6 bits
- The 'format' field forms an index into a table defined through
- the RTCP FMT option or non-RTP mechanisms (see Section 3.1. The
- mapping establishes the format of the RTP payload and determines its
- interpretation by higher layers. If no mapping has been defined in
- this manner, a standard mapping is specified by the companion profile
- document, RFC TBD. Also, default formats may be defined by the current
- edition of the Assigned Numbers RFC.
-
- sequence number: 16 bits
- The sequence number counts RPDUs. The sequence number increments by
- one for each packet sent. [The sequence number may be used by the
- receiver to detect packet loss, to restore packet sequence and to
- identify packets to the application.]
-
- timestamp: 32 bits
- The timestamp reflects the wallclock time when the RPDU was generated.
- The timestamp consists of the middle 32 bits of a 64-bit NTP timestamp,
- as defined in RFC 1305 [4]. Several consecutive packets may have equal
- timestamps.
-
- The timestamp of the first packet(s) within a synchronization unit
- is expected to closely reflect the actual sampling instant, measured
- by the local system clock. The local system clock should be
- controlled by a time synchronization protocol such as NTP if such
- a service is available. It is not expected that the local system
- clock be referenced to obtain the timestamp for the beginning of
- every synchronization unit, but the local clock should be referenced
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 7]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- frequently enough so that clock drift between synchronized system clock
- and sampling clock can be compensated for gradually. Within one
- synchronization unit, it may be appropriate to compute timestamps based
- on the logical timing relationships between the packets. For audio
- samples, for example, the nominal sampling interval may be used. If
- the clock quality field of the CDES option does not indicate otherwise,
- it is assumed that the timestamp at the beginning of a synchronization
- unit is derived from a synchronized system clock. However, it is
- allowable to operate without synchronized time on those systems where
- it is not available, unless a profile or session protocol requires
- otherwise.
-
-
-
- 3.3 The RTP Options
-
-
- The packet header may be followed by options and the payload. Options are
- summarized below. Unless otherwise noted, each option may appear only once
- per packet. Each packet may contain any number of options. A conforming
- implementation of RTP has to support the RTP options listed here, unless
- otherwise noted.
-
-
- CSRC 0 Content source identifiers. The content source option is inserted
- only by bridges and identifies all sources that contributed to the
- packet. For example, for audio packets, all sources that were mixed
- together to create this packet are listed, allowing correct talker
- indication at the receiver. Each CSRC option may contain one or
- more content source identifiers, each 16 bits long. The identifier
- values must be unique for all content sources received through a
- particular synchronization source (bridge) on a particular channel;
- the value of binary zero is reserved and may not be used. If the
- number of content sources is even, the two octets needed to pad the
- list to a multiple of four octets are set to zero. There should
- only be a single CSRC option within a packet. If no CSRC option is
- present, the content source identifier is assumed to have a value of
- zero. CSRC options are not modified by RTP-level translators.
-
- A conformant RTP implementation does not have to be able to generate
- or interpret the CSRC option.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| CSRC | length | content source identifier ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- SSRC 1 Synchronization source identifier. The SSRC option may be
- inserted by RTP-level translators, end systems and bridges. It
- is typically used only by translators, but it may be used by an
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 8]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- end system application to distinguish several sources sent with the
- same lower-layer source address. Each synchronization source with
- the same lower-layer address (e.g., the same IP address and UDP
- port) must have a distinct SSRC. Synchronization sources that are
- distinguishable by their lower-layer address do not require the use
- of SSRC options. The SSRC value zero is reserved and must not be
- used. If no SSRC option is present, the network source is assumed
- to indicate the synchronization source. There must be no more than
- one SSRC identifier per packet; thus, a translator must remap the
- SSRC identifier of an incoming packet into a new, locally unique
- SSRC identifier. The SSRC option may be considered in functionality
- as an extension of the source port number in protocols like UDP,
- ST-II or TCP.
-
- A RTP receiver must support the SSRC option. RTP senders only need
- to support this option if they intend to send more than one source
- to the same channel using the same source port.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| SSRC | length = 1 | identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- BOP 3 (beginning of playout unit) 16-bit sequence number designating the
- first packet within the current playout unit.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| BOP | length = 1 | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
- 3.4 Reverse-Path Option
-
-
- With two-party (unicast) communications, relaying back control information
- to the sender is easy. For multicast communications, control information
- can be sent to all members of the group. It may, however, be desirable to
- send a message to an individual member of a multicast group, for example
- to request retransmission of a particular data frame or to request/send a
- reception quality report. For this particular use, we introduce a mechanism
- for sending so-called reverse RPDUs. The RPDU format of reverse RPDUs is
- exactly the same as for regular messages and they can make use of all
- the options defined in this memorandum. Reverse RPDUs travel through the
- same translators as other RPDUs. The receiver distinguishes reverse RPDUs
- by their arrival on a different transport selector (e.g., a different UDP
- port), namely the same one which is used as a source transport selector
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 9]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- (e.g., UDP source port) for forward RPDUs. A receiver of reverse RDPUs
- cannot rely on any sequence number ordering, as a sender may use the same
- sequence number space while communicating through this reverse mechanism
- with several receivers. The sequence number space of reverse RPDUs has to
- be completely separate from that used for RPDUs sent to the multicast group.
- If the same sequence number space were used, the members of the multicast
- group not receiving reverse RPDUs would detect a gap in their received
- sequence number space.
-
-
-
- SDST 2 Synchronization destination identifier. The SDST option is only
- inserted by RTP end systems and bridges if they want to send
- unicast information to a particular site within the multicast group.
- Packets containing an SDST option must not contain an SSRC option
- and vice versa. The identifier value zero is allowed, unlike for
- SSRC options (see example below).
-
- Denote the the end system that wants to return a unicast message by
- S and the desired destination end system of that unicast message by
- D. If the multicast packets received by S from D contain no SSRC
- option, S and D must be directly connected, without an intervening
- translator. No SDST option is need in this case.
-
- If the multicast packet received by S from D contain an SSRC option,
- S inserts an SDST option using the identifier contained in the
- SSRC option received from D. D then forwards the packet to the
- source network and transport address found in the multicast packets
- coming from D. The packet will thus reach the translator on the
- path between S and D closest to S. The arrival on that transport
- address tells the translator that the packet is a unicast reverse
- control packet. The translator determines which source it maps
- into the identifier contained in the SDST option and replaces the
- SDST identifier by that value. In other words: if a forward RTP
- packet carries SSRC identifier X between two systems (either two
- translators or an end system and a translator), the unicast reverse
- control packet will carry SDST with identifier X between those two
- systems.
-
- Example for UDP: T1 and T2 are translators between end systems
- S and D. In the forward direction, D sends regular RTP packets
- with no SSRC to (among other multicast group members) translator T2
- with destination port 3456 and source port 5678; T2 inserts SSRC
- identifier 13 and forwards to translator T1 on source port 4590
- and destination port 3456; T1 translates SSRC 13 into SSRC 8 and
- forwards to S using destination port 3456 and source port 12789. In
- the unicast reverse RPDU, site S sends the packet to translator T1,
- destination port 12789 with SDST value 8. T1 replaces SDST value 8
- with SDST value 13 and forwards to translator T2 with destination
- port 4590. T2 finally sends the message with SDST value 0 to site D
- at destination port 5678. By its arrival port, site D determines
- that the RPDU is a reverse RPDU and treat it accordingly.
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 10]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- [Reverse control unicast packets are already identified by their
- destination transport address, so SSRC could be used for reverse
- control packets. A separate option is used to limit confusion.]
-
- Only applications that need to send or receive unicast control
- information flow need to implement the SDST option.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| SDST | length = 1 | identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
- 3.5 Security Options
-
-
- The security options below offer message integrity, authentication and
- privacy and the combination of the three.
-
- Support for the security options is not mandatory, but see the discussion
- for the ENC option. The four message integrity check options --- MIC, MICA,
- MICK and MICS --- are mutually exclusive, i.e., only one of them should be
- used for a single RPDU.
-
- All message integrity check options are computed over the fixed header,
- the ENC option preceding the message integrity check option (if present),
- the first four octets of the message integrity check option and the data
- (remaining header and payload) following the message integrity check option.
-
- The message integrity check options and the ENC option shall not cover
- the SSRC and SDST options, i.e., SSRC and SDST must be inserted between
- the fixed header and the ENC or message integrity check options, as SSRC
- and SDST are subject to change by translators that are likely not in
- possession of the necessary descriptor table (see below) and encryption
- keys. Translators that have the necessary keys and descriptor translation
- table may modify the contents of the RPDU, unless the MICA option is used
- (see MICA description).
-
- All security options carry a one-octet descriptor field. This descriptor
- is an index into two tables, one for the message integrity check options,
- one for the ENC option, established by non-RTP means, containing digest
- algorithms (MD2, MD5, etc.), encryption algorithms (DES variants) and
- encryption keys or shared secrets (for the MICK option). All sources within
- the same channel share the same table. The descriptor value may change
- during a session, for example, to use a different set of encryption keys.
-
- The descriptor value zero describes a set of default algorithms to be used:
- MD5 for the message digest algorithm, DES CBC for the encryption algorithm.
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 11]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- The MIC, MICK and MICS message integrity checks offer g_r_o_u_p_ a_u_t_h_e_n_t_i_c_a_t_i_o_n_,
- that is, the receiver can ascertain that the RPDU originated from a member
- of the group of sites sharing a common secret, but the receiver cannot
- authenticate which of the sources among that group sent the data. The
- receiver can also be assured that nobody outside the group tampered with the
- RPDU.
-
-
-
- ENC 8 All packet data after this option, but not the fixed header,
- is encrypted, using the encryption key and symmetric encryption
- algorithm specified by the descriptor field. The descriptor value
- may change over time to accomodate varying security requirements or
- reduce the amount of ciphertext using the same key. [For example,
- in a network interview, the candidate and interviewers could share
- one key, with a second key set aside for the interviewers only. For
- symmetric keys, source-specific keys offer no advantage.]
-
- The descriptor value zero is reserved for a default mode using
- the Data Encryption Standard (DES) algorithm in CBC (cipher block
- chaining) mode, as described in Section 1.1 of RFC 1423 [5]. The
- padding specified in that section is to be used. The 8-octet
- initialization vector (IV) may be carried unencrypted within the ENC
- option or generated anew for each packet. If the ENC option does
- not contain an initialization vector (indicated by an option length
- of 1), the fixed RTP header is used as the IV. [Using the fixed
- RTP header as the IV avoids regenerating the IV for each packet
- and incurs less header overhead.] For details on the tradeoffs
- for CBC IV use, see [6]. Support for encryption is not required.
- Implementations that do not support encryption should recognize the
- ENC option so that they can avoid processing encrypted messages
- and provide a meaningful failure indication. Implementations that
- support encryption should, at the minimum, always support the DES
- CBC algorithm.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| ENC | length = 3 | reserved | descriptor |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | DES (CBC) initialization vector, bytes 0 through 3 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | DES (CBC) initialization vector, bytes 4 through 7 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| ENC | length = 1 | reserved | descriptor |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 12]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- MIC 9 Messsage integrity check. The MIC option option is used only in
- combination with the ENC option immediately preceding it to provide
- privacy and group membership authentication. The message integrity
- check uses the digest algorithm specified by the descriptor field.
- The value zero implies the use of the MD5 message digest. Note that
- the MIC option is not separately encrypted.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| MIC | length | reserved | descriptor |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | message digest (unencrypted) ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- MICA 10 Message integrity check, asymmetric encryption. Currently, only
- the use of the MD2 and MD5 message digest algorithms is defined, as
- described in RFC 1319 [7] (as corrected in Section 2.1 of RFC 1423)
- and RFC 1321 [8], respectively. The MD2 and MD5 message digests are
- 16 octets long.
-
- ``To avoid any potential ambiguity regarding the ordering of the
- octets of an MD2 message digest that is input as a data value
- to another encryption process (e.g., RSAEncryption), the following
- holds true. The first (or left-most displayed, if one thinks in
- terms of a digest's "print" representation) octet of the digest
- (i.e., digest[0] as specified in RFC 1319), when considered as
- an RSA data value, has numerical weight 2**120. The last (or
- right-most displayed) octet (i.e., digest[15] as specified in RFC
- 1319) has numerical weight 2**0.'' [RFC 1423, Section 2.1]
-
- ``To avoid any potential ambiguity regarding the ordering of the
- octets of a MD5 message digest that is input as an RSA data value to
- the RSA encryption process, the following holds true. The first (or
- left-most displayed, if one thinks in terms of a digest's "print"
- representation) octet of the digest (i.e., the low-order octet of
- A as specified in RFC 1321), when considered as an RSA data value,
- has numerical weight 2**120. The last (or right-most displayed)
- octet (i.e., the high-order octet of D as specified in RFC 1321) has
- numerical weight 2**0.'' [RFC 1423, Section 2.2]
-
- The message digest is encrypted, using asymmetric keys, with the
- sender's private key using the algorithm described in Section 4.2.1
- of RFC 1423: ``As described in PKCS #1, all quantities input as
- data values to the RSAEncryption process shall be properly justified
- and padded to the length of the modulus prior to the encryption
- process. In general, an RSAEncryption input value is formed by
- concatenating a leading NULL octet, a block type BT, a padding
- string PS, a NULL octet, and the data quantity D, that is, RSA input
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 13]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- value = 0x00, BT, PS, 0x00, D. To prepare a MIC for RSAEncryption,
- the PKCS #1 ``block type 01'' encryption-block formatting scheme
- is employed. The block type BT is a single octet containing the
- value 0x01 and the padding string PS is one or more octets (enough
- octets to make the length of the complete RSA input value equal
- to the length of the modulus) each containing the value 0xFF. The
- data quantity D is comprised of the MIC and the MIC algorithm
- identifier.''. The encoding is described in detail in RFC 1423.
- For encrypting MD2 and MD5, the data quantity D is comprised of the
- 16-byte checksum, preceded by the binary sequences shown here in
- hexadecimal: 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48,
- 0x86, 0xF7, 0x0D, 0x02, 0x02, 0x05, 0x00, 0x04, 0x10 for MD2 and
- 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86, 0xF7,
- 0x0D, 0x02, 0x05, 0x05, 0x00, 0x04, 0x10 for MD5.
-
- The signature is padded as necessary. The value of the padding is
- left unspecified. [Note: The number of non-padding bits within the
- signature is known to the receiver as being equal to the key length.
- The MIC algorithm is identified through the bytes prepended to the
- actual 16-byte signature.]
-
- Contrary to what is specified in RFC 1423 for privacy enhanced mail,
- the asymmetrically signed MIC is carried in binary, NOT represented
- in the printable encoding of RFC 1421, Section 4.3.2.4. The
- encrypted length of the signature will be equal to the modulus of
- the RSA encryption used, rounded to the next integral byte count.
- The modulus and public key is conveyed to the receivers by non-RTP
- means. [Note: Asymmetric keys are used since symmetric keys would
- not allow authentication of the individual source in the multicast
- case.]
-
- A translator that receives an RPDU is not allowed to modify the
- parts of the RPDU covered by the MICA option as the receiver would
- have no way of establishing the identity of the translator and thus
- could not verify the integrity of the RDPU.
-
- Support for sending or interpreting MICA options is not required.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| MICA | length | encrypted message-digest ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- MICK 11 Message integrity check, keyed. This message integrity check
- does not require encryption. In addition to the RPDU parts to be
- included in the message digest according to the introduction to this
- section, the shared secret is placed in the MICK option and included
- in the message digest. (The shared secret is equivalent to the
- key used for the MICS and ENC options, but is 16 octets long, if
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 14]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- necessary by padding with binary zeroes.) The shared secret in the
- MICK option is then replaced by the computed 128-bit digest.
-
- The receiver saves the message digest contained in the MICK option,
- replacing it with the shared secret key and computes the message
- digest in the same manner as the sender. If the RPDU has not been
- tampered and originated with one of the holders of the secret key,
- the computed message digest will agree with the digest found on
- reception in the MICS option.
-
- [The message integrity check follows the practice of SNMP Version 2,
- as described in RFC 1446, Section 1.5.1. The MICS option itself
- is covered by the digest in order to detect tampering with the
- descriptor field itself. Using the secret key in the signature
- instead of encrypting the MD5 message digest avoids the use of an
- encryption algorithm when only authentication is desired. However,
- the security of this approach has not been as well established as
- that based on encrypting message digests, as used in the MICS, MIC
- and MICA options.]
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| MICS | length | reserved | descriptor |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | encrypted message digest ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- MICS 12 Message integrity check, symmetric-key encrypted. This message
- integrity check encrypts the message digest using DES ECB mode as
- described in RFC 1423, Section 3.1.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| MICS | length | reserved | descriptor |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | encrypted message digest ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
- 3.6 The Use of the Security Options
-
-
- Combinations of the message integrity check and ENC security options can be
- used to provide a variety of security services:
-
-
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 15]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- confidentiality: Confidentiality here means that only the intended
- receiver(s) can decode the received RTP packets; for others, the data
- contains no useful information. Confidentiality of the content is
- achieved by encryption using DES. The presence of encryption and the
- initialization vector is indicated by the ENC option. [Note: for
- efficiency reasons, this specification does not insist that content
- encryption only be used in connection with message integrity and
- authentication mechanisms. In most all cases, it will be obvious to
- the person receiving the data if he or she does not possess the right
- encryption key.]
-
- authentication and message integrity: In combination with certificates, the
- receiver can ascertain that the claimed originator is indeed the
- originator of the data (authentication) and that the data has not
- been altered after leaving the sender (message integrity). These two
- security services are provided by the message integrity check options.
- Certificates for MICA must be distributed through means outside of RTP.
- The services offered by MICA and MIC/MICK/MICS differ: MIC/MICK/MICS
- differ: With MIC/MICK/MICS, the receiver can only verify that the
- message originated within the group holding the secret key, rather than
- authenticate the sender of the message, while the MICA option affords
- true authentication of the sender.
-
- authentication, message integrity, and confidentiality: By carrying both
- the message integrity check and ENC option in RTP packets, the
- authenticity, message integrity and confidentiality of the packet can
- be assured (subject to the limitations discussed in the previous
- paragraph).
-
- The message integrity check is applied first to the all parts of the
- outgoing packet to be authenticated, and the message integrity check
- option is prepended to those parts. Then, the packet including the
- message integrity check option is encrypted using the shared secret
- key. The ENC option must be followed immediately by the message
- integrity check option, without any other options in between. The
- receiver first decrypts the octets following the ENC option and then
- authenticates the decrypted data using the signature contained in the
- message integrity check option.
-
- For this combination of security features and group authentication, the
- combination ENC and MIC is recommended (instead of MICS or MICK) as it
- yields the lowest processing overhead.
-
-
- A message integrity check option followed by an ENC option should not be
- used.
-
-
-
-
-
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 16]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- 4 Real Time Control Protocol --- RTCP
-
-
- The real-time control protocol (RTCP) conveys minimal control and advisory
- information during a conference. It provides support for loosely controlled
- conferences, i.e., where participants enter and leave without admission
- control and parameter negotiation. The services provided by RTCP services
- enhance RTP, but an end system does not have to implement RTCP features to
- participate in conferences(1). RTCP does not aim to provide the services
- of a conference control protocol and does not provide some of the services
- desirable for two-party conversations. If a conference control protocol is
- in use, the services of RTCP should not be required. (Note: as of the
- writing of this document, a conference or session control protocol has not
- been specified within the Internet.)
-
- Unless otherwise noted, control information is carried periodically as
- options within RPDUs, with or without payload. RTCP packets are sent to
- all members of a conference. These packets are part of the same sequence
- nubmer space as RTP packets not containing RTCP options. The period should
- be varied randomly to avoid synchronization of all sources and its mean
- should increase with the number of participants in the conference to limit
- the growth of the overall network and host interrupt load. The length of
- the period determines, for example, how long a receiver joining a conference
- has to wait in the worst case until it can identify the source. A receiver
- may remove from its list of active sites a site that it has not heard from
- for a given time-out period; he time-out period may depend on the number of
- sites or the observed average interarrival time of RTCP messages. Note that
- not every periodic message has to contain all RTCP options; for example, the
- MAIL part within the SDES option might only be sent every few messages.
-
- The item types are defined below:
-
-
- FMT 32 Format description.
-
-
- format: 6 bits
- The 'format' field corresponds to the index value from the
- 'format' RTP fixed header field, with values ranging from 0 to
- 63.
-
- Clock quality: 8 bits
- Provides an indication as to the sender-perceived quality of
- the timestamps in the RTP header. The octet is interpreted
- as a quantity indicating the maximum dispersion to a root time
- server measured in fractions of a second and expressed as a
-
- ------------------------------
- 1. There is one exception to that rule: if an application sends FMT
- options, the receiver has to decode these in order to properly interpret the
- RTP payload.
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 17]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- power of two.
-
- If a source is known to be synchronized to standard time, but
- with an unknown dispersion, or the dispersion is greater than
- TBD, the value TBD is used. If the clock is based on the
- nominal sample rate of the source, a value of TBD is used.
-
- The clock quality indication can be used to judge how the delay
- measurements reported by the QOS option can be interpreted (as
- absolute delay or only as delay variation). It is also useful
- for determining to what extent several sources with different
- clocks can be synchronized.
-
- Format-dependent data: variable
- Format-dependent data may or may not appear in a FMT option.
- It is passed to the next layer and not interpreted by RTP.
-
-
- A FMT mapping changes the interpretation of a given 'format' value
- (as carried in the fixed RTP header) starting at the packet
- containing the FMT option. The new interpretation applies only
- to packets from the synchronization source of this packet. A
- sender should refrain from changing the mappings between the RTP
- format field and the other fields in the FMT option that have been
- established through a conference registry, a conference announcement
- protocol or otherwise. Dynamic changes to these values may result
- in misinterpretation of RTP payload if the packet(s) containing the
- FMT option are lost.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| FMT | length |R|R| format | clock quality |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | format-dependent data ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- SDES 33 This option provides a mapping between a numeric source identifier
- and one or more identifying attributes. [Several attributes were
- combined into one option to avoid multiple mappings from identifiers
- to the receiver site data structure.] For those applications where
- the size of a multipart SDES option would be a concern, multiple
- SDES options may be formed with subsets of the parts to be sent in
- separate packets.
-
- An end system or a bridge uses an identifier value of zero to
- identify itself. For each contributor, a bridge forwards the SDES
- information received from that contributor, but changes the SDES
- source identifier to correspond to the value used in the CSRC option
- when identifying this contributor. A bridge that contributes data
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 18]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- to outgoing packets should use a CSRC and select another non-zero
- source identifier for that traffic and send CSRC and SDES options
- for it.
-
- Translators do not modify or insert SDES options. The end system
- performs the same mapping it uses to identify the content sources
- (that is, the combination of network source, synchronization source
- and the source number within this SDES option) to identify a
- particular source. SDES information is specific to a particular
- flow identifier, unless a higher-layer control protocol defines
- that all packets with the same source identifier (network and
- transport-level source addresses and the optional SSRC value) from a
- set of channels defined by the control protocol are described by the
- same SDES.
-
- Currently, the following items are defined. Each has a structure
- similar to that of RTCP and RTP options, that is, a type field
- followed by a length field (measured in multiples of four octets).
- No final bit is needed since the overall length is known. All
- of the SDES items are optional; however, if quality-of-service
- monitoring is to be used, the ADDR and TSEL items need to be
- provided (see QOS option).
-
-
-
- type value description
- ADDR 1 network address of source
- TSEL 2 transport address
- CNAME 4 canonical user and host identifier,
- e.g., ``doe@sleepy.megacorp.com'' or
- ``sleepy.megacorp.com''
- MAIL 5 user's electronic mail address
- e.g., ``John.Doe@megacorp.com''
- LOC 8 geographic user location,
- e.g., ``Rm. 2A244, Berkeley Heights, NJ''
- TXT 16 text describing the source,
- e.g.,``John Doe, Bit Recycler, Megacorp''
-
-
- Items are padded with the binary value zero to the next multiple of
- four octets. Each item may appear only once unless otherwise noted.
-
- A more description of the content of some of these types follows:
-
-
- ADDR: A source may send several network addresses, but only one
- for each address type value. Address types are identified by
- the Domain Name Service Resource Record (RR) type, as specified
- in the current edition of the Assigned Numbers RFC. For NSAP
- addresses, the NSEL byte is not included.
-
- TSEL: The protocol identifier uses the IP Protocol Numbers defined
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 19]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- in the current edition of the Assigned Numbers RFC. The
- figure shows the use of the TSEL item for the TCP and UDP
- protocols. There must be no more than one TSEL item in an SDES
- option. The TSEL item should precede any address information.
- [Multiple concurrent transport addresses are not meaningful.
- The ordering simplifies processing at the receiver.]
-
- CNAME: The CNAME item must have the format ``user@host'' or
- ``host'', where ``host'' is the fully qualified domain name of
- the host where the real-time data originates from, formatted
- according to the rules specified in RFC 1034, RFC 1035 and
- Section 2.1 of RFC 1123. The ``host'' form may be used if a
- user name is not available, for example on single-user systems.
- The user name should be in a form that a program such as
- ``finger'' or ``talk'' could use, i.e., it typically is the
- login name rather than the ``real life'' name. Note that the
- host name is not necessarily identical to the electronic mail
- address of the participant. The latter is provided through the
- MAIL item.
-
- LOC: Depending on the application, different degrees of detail are
- appropriate for this item. For conference applications, a
- string like ``Tampere, Finland'' may be sufficient, while for
- an active badge system, strings like ``Room 2A244, AT&T BL MH''
- might be appropriate.
-
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| SDES | length | source identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = ADDR | length | reserved | address type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | network-layer address ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = ADDR | length = 2 | reserved | addr. type = 1|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | IPv4 address |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = TSEL | length | reserved | transport pro.|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | transport-address (port number) ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 20]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = TSEL | length | reserved | protocol = 6 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | reserved | TCP port number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = TSEL | length | reserved | protocol = 17 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | reserved | UDP port number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = CNAME | length | user and domain name ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = MAIL | length | electronic mail address ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = LOC | length | geographic location of site ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = TXT | length | text describing source ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- BYE 35 The BYE option indicates that a particular site is no longer
- active. A bridge sends BYE options with a (non-zero) content source
- value. An identifier value of zero indicates that the source
- indicated by the synchronization source (SSRC) option and network
- address is no longer active. If a bridge shuts down, it should
- first send BYE options for all content sources it handles, followed
- by a BYE option with an identifier value of zero. Each RTCP message
- can contain one or more BYE messages. [Multiple identifiers in a
- single BYE option are not allowed to avoid ambiguities between the
- special value of zero and any necessary padding.]
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| BYE | length = 1 | content source identifier |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- QOS 36 Quality of service measurement. The QOS options describes
- statistics of a single synchronization source. The synchronization
- source is identified by one of the ADDR items from the SDES option
- together with the TSEL item from the SDES option. The SDES items
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 21]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- are appended directly to the fixed-length part of the QOS option,
- with TSEL following ADDR. For a description of these items, see the
- SDES option.
-
- The other fields of the option contains the number of packets
- received (32 bits), the number of packets expected (32 bits), the
- minimum delay, the maximum delay and the average delay. The delay
- measures are encoded as 16/16 NTP timestamps, that is, 16 bits
- encode the number and seconds and 16 bits the fraction of a second.
-
- A single RTCP packet may contain several QOS options. It is left
- to the implementor to decide how often to transmit QOS options
- and which sources are to be included. [The timestamp format
- is identical to the one used in the fixed RTP header. The
- quality-of-service information is identical to that carried in the
- reverse control option.]
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |F| QOS | length | synchronization source |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | packets expected |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | packets received |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | minimum delay (seconds) | minimum delay (fraction) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | maximum delay (seconds) | maximum delay (fraction) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | average delay (seconds) | average delay (fraction) |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = ADDR | length | reserved | address type |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | network-layer address ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | type = TSEL | length | reserved | transport pro.|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | transport-address (port number) ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
- 5 Security Considerations
-
-
- IP multicast provides no direct means for a sender to know all the receivers
- of the data sent. RTP options make it easy for all participants in a
- conference to identify themselves; if deemed important for a particular
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 22]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- application, it is the responsibility of the application writer to make
- listening without identification difficult. It should be noted, however,
- that within an internet, privacy of the payload can generally only be
- assured by encryption.
-
- The periodic transmission of session messages may make it possible to detect
- denial-of-service attacks. For many types of payload expected to be carried
- in RTP packets, such as compressed audio and video, the data is very close
- to white noise, making statistics-based ciphertext-only attacks difficult.
- Without MICS/MICA options, it may even be difficult to detect automatically
- when the code has been broken. However, the session information is
- more or less constant and predictable, allowing known-plaintext attacks.
- Chosen-plaintext attacks appear to be difficult.
-
- Since the timestamp in the RTP header is protected by the message integrity
- check options, some replay attacks can be detected if the receiver can bound
- the maximum packet delay and clock offset of the sender.
-
- Without authentication, the SDES fields may be used to impersonate another
- site. Impersonation and denial-of-service attacks can be made more
- difficult by providing digital signatures for all or parts of a message.
- The MICA or MICS and ENC RTP options described in Section 3 support
- privacy within group communications. The issues of key distribution and
- a certification hierarchy are outside the scope of this document. A
- direct mapping of all PEM header fields into RTCP option types would
- be straightforward and would allow reuse of existing PEM implementations.
- However, it is questionable whether loose conference control is the
- appropriate mechanism for distributing key and certificate information.
-
-
-
- 6 RTP over network and transport protocols
-
-
- This section describes issues specific to carrying RPDUs over particular
- network and transport protocols.
-
-
- 6.1 Defaults
-
-
- The following rules apply unless superseded by protocol-specific subsections
- in this section.
-
- If RTP protocol data units (RPDU) are carried over underlying protocols that
- provide the abstraction of a continuous bit stream rather than messages,
- each RPDU is prefixed by a 32-bit framing field containing the length of
- the RPDU measured in octets, not including the framing field itself. If an
- RPDU traverses a path over a mixture of octet-stream and message-oriented
- protocols, each RTP-level bridge between these protocols is responsible for
- adding and removing the framing field. A profile may determine that framing
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 23]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- is to be used for protocols that do provide framing in order to allow
- carrying several RPDUs in one underlying protocol data unit. [Carrying
- several RPDUs in one network or transport packet reduces header overhead and
- may ease synchronization between different streams.]
-
-
-
- 6.2 ST-II
-
-
- The next protocol field (``NextPCol'', Section 4.2.2.10 in RFC 1190) is
- used to distinguish two encapsulations of RTP over ST-II. The first uses
- NextPCol value TBD and directly places the RPDU into the ST-II data area.
- If NextPCol value TBD is used, the RTP header is preceded by a 32-bit header
- shown below. The byte count determines the number of bytes in the RTP
- header and payload to be checksummed. The 16-bit checksum uses the TCP and
- UDP checksum algorithm.
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | count of bytes to be checked | check sum |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- ... RTP header ...
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- A Implementation Notes
-
-
- We describe aspects of the receiver implementation in this section. There
- may be other implementation methods that are faster in particular operating
- environments or have other advantages. These implementation notes are for
- informational purposes only.
-
-
-
- A.1 Timestamp recovery
-
-
- A fully specified NTP timestamp with 32 bits of full seconds and 16 bits of
- resolution for the fractional seconds can be easily recovered from the RTP
- timestamp. The following code stores timestamps as the 48-bit whole part of
- a double precision floating point number:
-
-
-
- #include <math.h>
-
- typedef double CLOCK_t;
- typedef unsigned long u_long;
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 24]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- #define MAX32_bit 4294967296.
- #define MAX31 0x7fffffff
-
- CLOCK_t extend_timestamp(t, now)
- u_long t; /* in: timestamp, low-order 32 bits */
- double now; /* in: current local time */
- {
- u_long high, low; /* high and low order bits of 48-bit clock */
-
- low = fmod(x, MAX_32bit);
- high = now / MAX_32bit;
-
- if ((low > t) && (low - t > MAX31)) high++;
- else if ((low < t) && (t - low > MAX31)) high--;
- return high * MAX_32bit + t;
- } /* extend_timestamp */
-
-
-
-
- Using the full timestamp internally has the advantage that the remainder of
- the receiver code does not have to be concerned with modulo arithmetic. The
- current local time does not have to be derived directly from the system
- clock for every packet; a clock based on samples, e.g., incremented by the
- nominal audio frame duration, is sufficient.
-
-
- A.2 Detecting the Beginning of a Synchronization Unit
-
-
- RTP packets contain a bit flag indicating the end of a synchronization unit.
- The following code fragment determines if a packet is the beginning of a
- synchronization unit:
-
-
-
- CLOCK_t eos_t, t, now;
- int flag;
-
- struct {
- unsigned int ver:2; /* version number */
- unsigned int flow:6; /* flow */
- unsigned int o:1; /* option present */
- unsigned int s:1; /* sync bit */
- unsigned int format:6; /* content type */
- u_short seq; /* sequence number */
- u_long ts; /* time stamp */
- } *h;
-
- t = extend_timestamp(h->ts, now);
-
- if (h->s) {
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 25]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- flag = 1;
- eos_t = t;
- }
- else if (flag && t > eot_t) {
- flag = 0;
- /* handle beginning of synchronization unit */
- }
-
-
-
- (The structure definition has to be changed for little endian systems.)
-
-
- A.3 Demultiplexing and Locating the Synchronization Source
-
-
- For a combination of multicast or destination unicast address, destination
- port, the flow ID determines the channel. For each channel, the receiver
- maintains a list of all sources, content and synchronization sources alike
- in a table or other suitable datastructure. Synchronization sources are
- stored with a content source value of zero. When an RTP packet arrives, the
- receiver determines its network source address and port (from information
- returned by the operating system), synchronization source (SSRC option) and
- content source(s) (CSRC option). To locate the table entry containing
- timing information, mapping from content descriptor to actual encoding,
- etc., the receiver sets the content source to zero and locates a table
- entry based on the triple (network address and port, synchronization source
- identifier, 0).
-
- The receiver identifies the contributors to the packet (for example, the
- speaker who is heard in the packet) through the list of content sources
- carried in the CSRC option. To locate the table entry, it matches on the
- triple (network address and port, synchronization source identifier, content
- source).
-
- Note that since network addresses are only generated locally at the
- receiver, the receiver can choose whatever format seems most appropriate for
- matching. For example, a Berkeley Unix-based system may use struct sockaddr
- data types if it expects network sources with non-IP addresses.
-
-
- Acknowledgments
-
-
- This draft is based on discussion within the IETF audio-video transport
- working group chaired by Stephen Casner. The current protocol has its
- origins in the Network Voice Protocol and the Packet Video Protocol (Danny
- Cohen and Randy Cole) and the protocol implemented by the 'vat' application
- (Van Jacobson and Steve McCanne). Stuart Stubblebine (ISI) helped with
- the security aspects of RTP. Ron Frederic (Xerox PARC) provided extensive
- editorial assistance.
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 26]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- B Addresses of Authors
-
-
- Stephen Casner
- USC/Information Sciences Institute
- 4676 Admiralty Way
- Marina del Rey, CA 90292-6695
- telephone: +1 310 822 1511 (extension 153)
- electronic mail: casner@isi.edu
-
-
-
- Henning Schulzrinne
- AT&T Bell Laboratories
- MH 2A244
- 600 Mountain Avenue
- Murray Hill, NJ 07974
- telephone: +1 908 582 2262
- electronic mail: hgs@research.att.com
-
-
- References
-
-
- [1] J. Postel, ``Internet protocol,'' Network Working Group Request for
- Comments RFC 791, Information Sciences Institute, Sept. 1981.
-
- [2] International Standards Organization, ``ISO/IEC DIS 10646-1:1993
- information technology -- universal multiple-octet coded character set
- (UCS) -- part I: Architecture and basic multilingual plane,'' 1993.
-
- [3] The Unicode Consortium, T_h_e_ U_n_i_c_o_d_e_ S_t_a_n_d_a_r_d_. New York, New York:
- Addison-Wesley, 1991.
-
- [4] D. L. Mills, ``Network time protocol (version 3) -- specification,
- implementation and analysis,'' Network Working Group Request for
- Comments RFC 1305, University of Delaware, Mar. 1992.
-
- [5] D. Balenson, ``Privacy enhancement for internet electronic mail: Part
- III: Algorithms, modes, and identifiers,'' Network Working Group
- Request for Comments RFC 1423, IETF, Feb. 1993.
-
- [6] V. L. Voydock and S. T. Kent, ``Security mechanisms in high-level
- network protocols,'' A_C_M_ C_o_m_p_u_t_i_n_g_ S_u_r_v_e_y_s_, vol. 15, pp. 135--171,
- June 1983.
-
- [7] J. Kaliski, Burton S., ``The md2 message-digest algorithm,'' Network
- Working Group Request for Comments RFC 1319, RSA Laboratories, Apr.
- 1992.
-
- [8] R. Rivest, ``The MD5 message-digest algorithm,'' Network Working Group
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 27]
-
-
- INTERNET-DRAFT RTP July 30, 1993
-
- Request for Comments RFC 1321, IETF, Apr. 1992.
-
- [9] P. Mockapetris, ``Domain names -- concepts and facilities,'' Network
- Working Group Request for Comments RFC 1034, ISI, Nov. 1987.
-
- [10] P. Mockapetris, ``Domain names -- implementation and specification,''
- Network Working Group Request for Comments RFC 1035, ISI, Nov. 1987.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- H. Schulzrinne/S. Casner Expires 10/01/93 [Page 28]
-